from rest_framework import serializers
from django.contrib.auth.models import Group, Permission


class PermissionSimpleSerializer(serializers.ModelSerializer):
    """ 用户权限 简单 模型类序列化器 """

    class Meta:
        model = Permission
        fields = ["id", "name"]


class GroupSerializer(serializers.ModelSerializer):
    """ 用户组 模型类序列化器 """

    class Meta:
        model = Group
        # permissions 字段为 ManyToManyField 字段，模型类支持自动操作中间表数据
        fields = ["id", "name", "permissions"]

    # 重写create方法，演示如何使用ManyToManyField字段，来增删改查中间表数据
    # def create(self, validated_data):
    #     # 1、提取有效数据中的permission列表数据 --> 因为该数据适用于插入中间表的
    #     permissions = validated_data.pop('permissions') # [权限1，权限2，权限3....]
    #     # 2、新建分组
    #     group = super().create(validated_data)
    #     # 3、插入中间表(分组权限)记录和表达新建分组的权限
    #     group.permissions.set(permissions) # set方法传入列表统计插入多条数据
    #     # group.permissions.add(单一权限对象) # add方法传入单一关联权限对象插入中间表一条数据
    #     # group.permissions.delete(单一权限对象) # delete方法传入单一关联权限对象删除中间表一条数据
    #
    #     return group
